<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 原型：原型就是一个对象，也叫原型对象。
    // 原型对象 prototype(显式原型)

    // 1. 所有的函数，都有一个prototype属性（显式属性），这个属性是一个指针，指向原型对象。
    // 指针：地址，门牌号
    function Star() { }
    console.dir(Star)

    // 原型对象 // prototype这个属性值指向的对象，就是原型对象
    // Star.prototype = {
    //     constructor: Star
    // } 

    // 2. 原型对象上默认有一个constructor属性，指向构造函数本身

    // 3. 我们可以往这个原型对象上添加属性和方法。所有通过构造函数创建的实例，都共享原型上的属性和方法

    Star.prototype.sing = function () {
      console.log('sing')
    }
    console.dir(Star)
  </script>
</body>

</html>